package br.com.rhinovet.logica.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.rhinovet.dao.generico.DaoGenerico;
import br.com.rhinovet.dao.unitario.contract.ProprietarioDaoContract;
import br.com.rhinovet.dao.unitario.contract.TelefoneDaoContract;
import br.com.rhinovet.entidade.Proprietario;
import br.com.rhinovet.entidade.Telefone;
import br.com.rhinovet.logica.contract.TelefoneLogicaContract;
import br.com.rhinovet.util.StringUtil;

@Service("telefoneLogica")
public class TelefoneLogica extends DefaultLogica<Telefone> implements TelefoneLogicaContract {
	
	private static final long serialVersionUID = 1L;

	@Autowired
	private TelefoneDaoContract telefoneDao;
	
	@Autowired
	private DaoGenerico<Telefone> daoTelefone;

	@Autowired
	private ProprietarioDaoContract daoProprietario;
	
	@Override
	public List<Telefone> buscarTelefonesProprietario(Long idProprietario) throws Exception {
		return telefoneDao.buscarTelefonesProprietario(idProprietario);
	}

	@Override
	public void salvarTelefones(List<Telefone> listaTelefones) throws Exception {
		for (Telefone itemTelefone : listaTelefones) {
			Proprietario proprietario = daoProprietario.obterProprietarioPorId(itemTelefone.getProprietario().getId());
			itemTelefone.setProprietario(proprietario);
			
			if (StringUtil.textoPreenchido(itemTelefone.getNumero())) {
				if (itemTelefone.getId() == null) {
					daoTelefone.adicionar(itemTelefone);	
				} else {
					daoTelefone.editar(itemTelefone);
				}
			}
		}
	}
	
	@Override
	public void removerTelefones(Telefone telefone) throws Exception {
		daoTelefone.remover(Telefone.class, telefone.getId());
	}
	
}
